Shared memory in a virtual environment

ABSTRACT

A server LPAR operating in a virtualized computer shares pages with client LPARs using a shared memory region (SMR). A virtualization function of the computer receives a get-page-ID request associated with a client LPAR to identify a physical page corresponding to a shared page included in the SMR. The virtualization function requests the server LPAR to provide an identity of the physical page. The virtualization function receives a page-ID response comprising the identity of a server LPAR logical page that corresponds to the physical page. The virtualization element determines a physical page identity and communicates the physical page identity to the client LPAR. The virtualization element receives a page ID enter request and enters an identity of the physical page into a translation element of the computer to associate a client LPAR logical page with the physical page.

BACKGROUND

The present disclosure relates to virtualized server environments. Morespecifically, the disclosure relates to sharing memory pages of a serverlogical partition or virtual machine with client logical partitions orvirtual machines.

SUMMARY

According to embodiments of the present disclosure (hereinafter “thedisclosure”), a computer includes a plurality of logical partitions(LPARs) that can share a physical memory page. A method for sharing thephysical memory page includes receiving a get-page-ID request, whichincludes an identity of a shared page and the identity of a sharedmemory region (SMR). The SMR is associated with a first LPAR among theplurality of LPARs, and the shared page is included in the SMR. Theget-page-ID request is associated with a second LPAR also included inthe plurality of LPARs.

In response to the get-page-ID request, the method includescommunicating to the first LPAR, based on the identity of the SMR, arequest to identify a physical page corresponding to the shared page. Inresponse to communicating the request to identify the physical page tothe first LPAR, the method further includes receiving a page-IDresponse. The page-ID response comprises the identity of a first logicalpage included in a set of logical pages associated with the first LPAR.The first logical page further corresponds to the shared page and to thephysical page. In response to the page-ID response, the method includescommunicating a first identity of the physical page to the second LPAR.

Receiving an enter-page-ID request is included in the method. Theenter-page-ID request includes an identity of a second logical pageincluded in a set of logical pages associated with the second LPAR, andfurther includes the first identity of the physical page. In response tothe enter-page-ID request, an embodiment enters a second identity of thephysical page into an address translation element. The second identityis based on the first identity of the physical page and the addresstranslation element operates to translate the identity of the secondlogical page to the second identity of the physical page.

In some embodiments, the method includes receiving a registrationrequest associated with the SMR and the first LPAR. In response to theregistrations request, the method determines the SMR identifier andcommunicates the SMR identifier to the first LPAR. Also, in someembodiments, the first identity of the physical page is an encryptedpage number that corresponds to the physical page. In communicating thefirst identity to the second LPAR, the method includes generating theencrypted page number. In entering the second identity into the addresstranslation element, the method includes converting the encrypted pagenumber to a physical page number and entering the physical page numberinto the address translation element.

A system embodying the disclosure comprises a computer having a memoryand a plurality LPARs. A first and second LPAR are included among theplurality of LPARs. An SMR, comprising a set of shared pages, isassociated with the first LPAR. A shared page included in the SMRcorresponds to a physical page included in memory of the computer. Thesystem includes an address translation element to translate an identityof a logical page to an identity of a physical page included in thememory. The system further includes a processor configured to performmethods of the disclosure.

A computer programming product embodying the disclosure comprisesprogramming instructions to cause a processor to perform methods of thedisclosure.

The above summary is not intended to describe each illustratedembodiment or every implementation of the disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 is a block diagram illustrating a computer, according to aspectsof the disclosure.

FIG. 2A is a block diagram illustrating mapping of logical to physicalpages, according to the disclosure.

FIG. 2B is a block diagram illustrating an example mapping of logical toshared physical pages, according to the disclosure.

FIG. 3 is a block diagram illustrating an example shared memory region,according to the disclosure.

FIG. 4 is a flowchart that illustrates an example method to share pagesof a server VM, according to the disclosure.

FIG. 5 is flowchart that illustrates an example method to map a clientLPAR logical page to a shared page of an SMR, according to aspects ofthe disclosure.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure (hereinafter, “the disclosure”) relateto virtualized computing environments having a plurality of logicalpartitions (LPARs). More particular aspects relate to applicationsexecuting in an operating system of one logical partition sharing memorypages of an application executing in an operating system of anotherlogical partition. While the present disclosure is not necessarilylimited to such uses, aspects of the disclosure may be appreciatedthrough a discussion of various examples using this context.

A computer in a computing system can include virtualized instances ofphysical resources of the computer. A computer can virtualize resourcessuch as physical processors, physical blocks of memory, I/O devices ornetwork interfaces, and/or storage media or devices, for example. Asused herein, “computer” refers to any form of computing device capableof virtualizing physical resources, for example: server computers,desktop or laptop computers, and mobile devices (e.g., a tablet ormobile phone).

Virtualizing physical resources of a computer is one means by which acomputer can “partition” the physical resources of the computer toallocate, or share, portions of the physical resources among a pluralityof “partitions” of the computer. As used herein, a “partition” comprisesa self-contained computing environment that contains at least oneprocessor and, optionally, memory resources sufficient to enableprograms to execute within that environment independently of programsoperating in other partitions of the same computer. Correspondingly,“logical partition (LPAR)” is used herein to refer to a partition of acomputer that includes at least some virtualized resources of thecomputer.

LPARs, and other forms of logical partitions, are also in someembodiments called “virtual machines (VMs)”, and it will be understoodby one of ordinary skill in the art that a VM having at least somevirtual resources, and an LPAR, are interchangeable within the scope ofthe disclosure. For purposes of illustrating the disclosure, but notlimiting to embodiments, reference to an “LPAR” is further understoodherein to refer inclusively to an OS, or other program, operating withinthe LPAR.

An LPAR is not limited to only virtual resources, and can include anycombination of virtual and/or physical resources. For example, an LPARcan include only physical processors, only virtual processors, or acombination of some physical and some virtual processors. An LPAR caninclude only virtual memory (e.g., one or more virtual memory pages),only physical memory (e.g., one or more pages within a physical memory),or a combination of some physical and some virtual memory resources. AnLPAR can have other forms of virtual resources in addition to virtualprocessors and/or memory, including virtual network interfaces and/orvirtual storage (e.g., virtual hard drives). A “virtualized computer”,as used herein, refers to a computer in which physical resources of thecomputer are virtualized, or partitioned, and allocated to one or moreLPARs (or, VMs) operating in the computer.

In a computer, physical processors can be embodied as processor modules,processor modules can contain one or more processor cores, and processorcores can include a plurality of processor threads (e.g., threads of amulti-threaded processor core). A processor thread can be an executionunit within a processor core and can be wholly, or partially,independent of other threads within that core (or, other cores withinthe same or other processor modules). A computer can virtualize aphysical processor as, for example, a time-sliced fraction of a physicalprocessor (e.g., core or thread), a subset of physical cores of one ormore physical processor modules, and/or a subset of threads of one ormore physical processor cores or modules. As used herein, “processor”refers to any of the various forms of implementing a physical or virtualprocessor in a computer.

Processors can execute instructions from and/or read or write data in amemory of a computer. A computer can include a single memory, or caninclude a plurality of memories and each memory can have a differentfunction, or role, within the computer. For example, one memory can be amain memory, and other memories can be cache memories, such as L1, L2,or L3 caches. Memories can be implemented using various electronictechnologies, including, for example, semiconductor Dynamic RandomAccess Memory (DRAM) or flash memories.

A physical memory of a computer can be embodied as one or more physicalmemory modules, a memory can be organized as physical memory blocks(PMBs), and the PMBs can be comprised of physical memory pages. A PMBcan be a portion of a memory module or, alternatively, can span aplurality of memory modules, according to the relative sizes of memorymodules and PMB. A memory module and/or a PMB can each have a size, forexample, that is a power of 2, such as 4 GB, 256 GB, or 1 TB, and thesizes of PMBs can be different from each other and from that of a memorymodule. In embodiments of the disclosure (hereinafter, “embodiments”),pages comprising a PMB can be, for example, a power of 2 size, such as4K, 16K, and/or 64K bytes.

A computer can virtualize physical memory by mapping a “logical” memoryblock (LMB) to one or more PMBs or, alternatively, to a sub-portion of aPMB (e.g., a particular set of contiguous pages of a PMB). It can beconvenient, in an embodiment, to associate an LMB of a particular sizeto a corresponding contiguous region of a PMB having the same size.However, an embodiment can associate any particular set of pages of oneor more PMBs with any particular LMB, and need not necessarily form anLMB of contiguous pages of any one PMB, or contiguous PMBs.

An LMB can be comprised of logical pages, and an embodiment can have asize of a logical page, within an LMB, that is identically the size of apage in a PMB. Alternatively, an embodiment can have a logical page sizelarger than the size of a physical page. For example, an embodiment canhave a logical page size of 64 KB which in turn can map, for example, to16 contiguous 4 KB pages within the portion of the PMB mapped by theLMB. Logical pages within an LMB can have a logical address (or,“Logical Page Number,” LPN) corresponding, or “mapped”, to the physicaladdress (or, “Physical Page Number,” PPN) of a page of a PMB.

FIG. 1 depicts an example computer system, 100, according to embodimentsof the disclosure. Computer 102 can be a virtualized computer andincludes processor modules 110 and 120, each of which contains aplurality of processor cores, such as 112A, 112B, 122A and 122B. Each ofthe processor cores in turn have processor threads, such as threadsT1-T4 in each of processor cores 112A, 112B, 122A and 122B. Computer 102includes memory 130, which is comprised of memory modules 132 and 134,which in turn are organized as PMBs, such as 132A and 132B. The PMBs canbe further organized as pages (e.g., P1 through PN). For example, PMB132A can be a 256 GB block of memory organized as contiguous 4 KBphysical pages.

A virtualized computer can include a plurality of LPARs, and the LPARscan include programs, such as operating systems (OSes), that can furtherinclude other programs. To illustrate, computer 102 is virtualized toinclude LPARs 150A-150C, which in turn include OSes 104A-104C,respectively. The OSes further include programs, such as program 106 ofOS 104A.

While not shown in FIG. 1, a computer can also include I/O devicesand/or interfaces, such as storage devices (e.g., disk or flash drives),network interfaces, input devices such as a mouse or keyboard, and/oroutput devices such as displays or printers, or interfaces to thesedevices, for example. A computer, or a component thereof (e.g., aphysical processor module, or an Application Specific IntegratedCircuit, or “ASIC”), can interconnect processors, memory, and I/Odevices or buses by means of I/O buses or links, such as, for example,PCI-Express, SATA or SAS, Fibre Channel, and Ethernet. For example,while not shown in FIG. 1, computer 102 can have a variety of such I/Odevices and the I/O devices can be connected to the processors and/ormemory of computer 102 by means of I/O buses or links. A virtualizedembodiment of computer 102 can include virtualized processors,virtualized memory, and/or virtualized I/O devices and/or virtualizedstorage.

Partitioning and virtualizing physical resources can isolate thephysical resources corresponding to virtual resources allocated to oneLPAR from those corresponding to virtual resources allocated to anotherLPAR. For example, a virtual processor can correspond to particularthreads of core 112A and an LMB can correspond to PMB 134A (or, aportion thereof) and LPAR 150A can be assigned, or “allocated”, thevirtual processor and the LMB for its exclusive use. The computer canrestrict other LPARs, such as 150B and 150C, from access to the physicalprocessor threads of core 112A, and physical memory pages of PMB 134A,corresponding to the virtual processor and LMB allocated to LPAR 150A.

A virtualized computer can include a virtualization component, which canoperate to create the virtual instances of the resources, and toallocate those virtual resources (e.g., virtual processors and/orvirtual memory) to LPARs, or otherwise manage those virtual resources(e.g., modify their size or correspondence to particular physicalresources). In an embodiment, a “hypervisor” can be a component of avirtualized computer that creates and/or manages the virtual resources.As illustrated in FIG. 1, computer 102 includes a hypervisor, SMR-awarehypervisor 108, which can virtualize resources such as processors inprocessor modules 110 and 120, or PMBs in memory modules 132 and 134. An“SMR-aware” hypervisor can embody features and/or aspects of the presentdisclosure, such as are described in reference to FIGS. 3A, 3B, 4, and5. “Hypervisor”, as used hereinafter, refers to any form of a hypervisorthat is SMR-aware so as to embody one or more features and/or aspects ofthe disclosure.

A hypervisor can be a “built-in” component of a virtualized computer,such as firmware included in the computer and operating in modes of thecomputer having particular privileges (e.g., access to privilegedprocessor instructions) compared to other programs of the computer(e.g., programs operating within an LPAR). In other embodiments, ahypervisor can be a program of an LPAR (e.g., an operating system), inwhich that LPAR has particular privileged operating modes (e.g., accessto privileged processor instructions) compared to other LPARs.

As used herein, for purposes of illustrating the disclosure, but notlimiting to embodiments, a “hypervisor” refers to any embodiment of avirtualization component of a virtualized computer, or in communicationwith a virtualized computer, that operates to partition, or otherwisevirtualize, the physical resources of the computer, and/or to manageallocation or use of the virtual and/or physical resources of thecompute by LPARs.

A hypervisor can virtualize physical processors of a computer.Hypervisor 108, for example, can create virtual processors correspondingto the processor cores, threads, or fractions thereof, of processormodules 110 and/or 120, and allocate particular virtual processors toeach of the LPARs 150A-150C. Hypervisor 108 can restrict the LPARs touse only the particular physical processors corresponding to the virtualprocessors allocated to each LPAR. Similarly, a hypervisor can partitionthe physical memory of the computer, such as by creating LMBs mapped toparticular portions (or, pages) of PMBs. The hypervisor can allocate oneor more particular LMBs to each LPAR. Hypervisor 108 can restrict theLPARs to use only the particular physical memory pages corresponding toparticular logical pages of the LMBs allocated to each LPAR. Each of theLPARs can be unaware of the presence of the other LPARs or the physicalprocessors and/or memory comprising the computer or allocated to otherLPARs.

A hypervisor can interact with a management component of a virtualizedcomputer to configure the LPARs and physical or virtual resources of thecomputer. For example, a management component, or “management console”,can provide a graphical user interface (GUI) suitable for a human tointeract with the computer. A management console can provide a commandline interface (CLI) suitable for a program to interact with thecomputer. A management console GUI and/or CLI can include, for example,interfaces to determine how many LPARs to create, which resources topartition or virtualize and in what fractions, which virtual and/orphysical resources to allocate to each LPAR, and/or when to activate(or, “boot”) or terminate particular LPARs.

As used herein, “management console” refers to any component of acomputer that participates in determining the configuration and/ormanagement of virtual or physical resources and LPARs of a virtualizedcomputer. A management console can be a component included in avirtualized computer; for example, a management console can be acomponent of, or can be, a service element of a virtualized computer. Amanagement console can be a component of another computer or incommunication with a virtualized computer (e.g., by means of a networkconnection to another computer).

Computer system 100 includes management console 140. Computer 102, orcomponents thereof, can communicate with management console 140 by meansof interfaces 142 and/or 144. Management console 140 can be a source ofinputs to computer 102, and/or can be a consumer of outputs, or ofresults of operations of computer 102, or components thereof. Managementconsole 140 can be a utility to manage, or administer, resources and/oroperations of a computer, and/or components thereof. For example, ahuman user (e.g., using a GUI), or a program (e.g., using a CLI), canuse management console 140 to determine the number of LPARs included incomputer 102 and, optionally, the type of OSes included in each of theLPARs.

Management console 140 can be used to assign particular resources ofcomputer 102 to LPARs included in computer 102, and/or to boot orshutdown particular LPAR, for example. Management console 140 caninteract with hypervisor 108 as part of administering resources and/oroperations of computer 102. Management console 140 can communicate withhypervisor 108 by means of, for example, interface 144. Managementconsole 140 can communicate (e.g., by means of interface 142) with oneor more of LPARs 150A-150C (referred to herein, collectively, as “LPARs150”), and/or OSes 104A-104C 104C (referred to herein, collectively, as“OSes 104”). As a management console.

Interfaces between a console and a computer can be particular to whethera console is a component of the computer, or is embodied (e.g., inanother computer) external to the computer. For example, if managementconsole 140 is embodied external to computer 102, interfaces 142 and/or144 can be network interfaces, or I/O device interfaces. Embodiments canimplement interfaces 142 and 144 as different types of interfaces. Forexample, interface 142 can be an Ethernet interface between managementconsole 140 and OS 104A and/or program 106, and interface 144 can be adifferent type of interface, such as an I/O bus or I/O link.

Management console 140 can be a component of computer 102 and interfaces142 and/or 144 can be interfaces internal to computer 102. For example,interface 144 can be a messaging interface using a mailbox in a regionof a memory (e.g., within memory 130) that can be shared by managementconsole 140 and hypervisor 108. Interface 144 can include programfunction calls from management console 140 to hypervisor 108, and/orvice versa. Interface 144 can include interrupts signaled to console 140and/or hypervisor 108, and/or can include data structures in in a regionof a memory (e.g., within memory 130) that can be shared by console 140and hypervisor 108.

LPARs in a virtualized computer can communicate with a hypervisor bymeans of a “hypervisor interface”, such as hypervisor interface 146 incomputer 102 between LPARs 150 and hypervisor 108. A hypervisorinterface in a virtualized computer system can be any of a variety ofinterfaces suitable for an LPAR to communicate with a hypervisor. Forexample, interface 146 can be a set of program function calls from theLPARs 150 to hypervisor 108, messages exchanged between hypervisor 108and LPARs 150, communications interfaces such as physical or virtualEthernet connections between LPARs 150 and hypervisor 108, interruptssignaled to hypervisor 108 and/or to LPARs 150, and/or can include datastructures in a memory (e.g., within memory 130) that can be shared byhypervisor 108 and LPARs 150. A hypervisor interface, such as 146, canbe a combination of any of the foregoing.

FIG. 2A illustrates an example of mapping logical pages of LMBs tophysical pages of PMBs. For purposes of illustration, but not limitingto embodiments, FIG. 2A is described using the example virtualizedcomputer 102 of FIG. 1. In embodiments, a hypervisor can form LMBs. Forexample, hypervisor 108 can form LMBs 232A-232C comprised of logicalpages (e.g., logical pages L1-L4 of LMB 232A). A hypervisor can allocateparticular LMBs to particular LPARs. For example, in FIG. 2A, LPAR 150Ais allocated LMB 232A and LPAR 150B is allocated LMBs 232B and 232C.

A hypervisor can associate LMBs with particular PMBs in a memory of acomputer. For example, hypervisor 108 can associate LMB 232A with PMB132A, LMB 232B with PMB 132B, and LMB 232C with PMB 134A. A hypervisorcan use an LMB table, for example, to associate a particular LMB with aparticular PMB (or, pages of the PMB). In FIG. 2A hypervisor 108 can useLMB table 202 to “map” (i.e., make the association between) the LMBs tothe PMBs. An LMB can have, for example, an LMB ID and a PMB can have,for example, a PMB ID. An LMB ID can select an entry in LMB table 202and the entry can contain a corresponding PMB ID. In some embodiments,an LMB can be mapped to pages in each of more than one PMB, and an LMBtable can include, for example, a list of PMBs, and a list of the pagesincluded in each PMB, that maps the LMB to the PMBs, or pages thereof.

Logical pages within an LMB can be similarly mapped to physical pages ina corresponding PMB. In embodiments, a logical page can be associatedwith a physical page by means of, for example, a page table. Forexample, in FIG. 2A, page table 204A maps logical pages of LMB 232A tophysical pages of PMB 132A, and page table 204B maps logical pages ofLMBs 232B and 232C to physical pages of PMBs 132B and 134A. In a morespecific example, page table 204A has an entry corresponding to a LPN oflogical page L1 of LMB 232A, and the content of that entry can be thePPN of physical page P1 of PMB 132A. Page table 204A can operatesimilarly for various, or all, logical pages of one or more LMBsallocated to LPAR 150A. Page table 204B can operate similarly forvarious, or all, logical pages of one or more LMBs allocated to LPAR150B.

While the example associations between LMBs and PMBs, and betweencorresponding logical and physical pages, illustrated in FIG. 2A aredescribed as by means of mapping tables, the description is not intendedto be limiting to embodiments. It would be apparent to one of ordinaryskill in the art that other structures can accomplish such associations,such as lists or hardware elements (e.g., registers) within the scope ofthe disclosure. Further, while the example of FIG. 2A illustrates a pagetable associated with each LPAR, it will be understood by one ofordinary skill in the art that an embodiment can employ, for example, asingle table that maps the logical addresses of all LMBs, for all LPARscollectively, or a combination of other tables or structures that canassociate a logical page of an LMB allocated to one LPAR with a physicalpage in the memory of the computer.

In embodiments, program instructions executed by a processor canreference data (e.g., a byte or contiguous sequence of bytes) in amemory using a logical address (LA) of the data in a memory of thecomputer. In some embodiments, an LA can be a logical address of thatdata (e.g., a data byte or word) within a logical page of an LMB. Inalternative embodiments, an LA referenced by a program instruction canbe a virtual address (VA) of the data. For example, an OS can create avirtual address space to allocate to, or associate with, a program (or,programs) and the OS can map (e.g., by means of a mapping table withinthe OS) the virtual address space to logical pages within an LMB (or,alternatively, to pages within a PMB). A VA can correspond to a LAwithin a logical page of an LMB, for example. In some embodiments, a VAcan differ from a corresponding logical address in a logical page of anLMB. As used herein, “LA” refers to any form of virtual or logicaladdress of data in a memory that can be mapped to a corresponding PA(e.g., by means of a page table).

An LA can correspond to a physical address (PA) of the data as the datais stored in a physical page of a memory of a computer (e.g., a physicalpage in a PMB). In some embodiments, mapping tables 204 a and 204B canbe a “hardware page table (HPT)” and a hardware element of the computercan use the HPT to determine a PA corresponding to an LA of data in amemory. For example, a processor (or, a memory control or managementunit, or other unit designed to translate logical to physical addresses)can access an HPT to translate a virtual address (VA) referenced in aninstruction to the corresponding physical address (PA) in the physicalmemory of the computer. For purposes of illustrating the disclosure, butnot limiting to embodiments, hereinafter page tables 204A and 204B areconsidered to be HPTs used by a processor (or other hardware element) ofcomputer 102 to translate an LA of data referenced by the processor to aPA of a physical page of computer 102 memory 130.

In some embodiments, logical pages and corresponding physical pages areof a uniform size, such as (for example) 4 KB or 16 KB. An LA cancorrespond to a location (e.g., a particular byte or word offset) withina logical page, and the logical page can have a corresponding “logicalpage number (LPN)” within a set of logical pages (e.g., an LMB, or allLMBs collectively). For example, LPN “0” can be the lowest ordinallogical page in a set of contiguous pages, and increasing LPNs cancorrespond to successive logical pages within the set. Similarly, a PAcan correspond to a location (e.g., a particular byte or word offset)within a physical page, and the physical page can have a corresponding“physical page number (PPN)” within a set of physical pages (e.g., aPMB, or all PMBs collectively). For example, PPN “0” can be the lowestordinal physical page in a set of contiguous physical pages, andincreasing PPNs can correspond to successive physical pages.

A page table can have entries corresponding to LPNs, and the content ofeach of the entries can be a PPN to which a corresponding LPN is mapped.For example, an HPT may contain LPN entries for each logical page of oneor more LMBs allocated to an LPAR (or, all LMBs of a computercollectively). An LPN can select an entry in the table and thecorresponding PPN can be extracted from that entry to translate an LA toa PA, for example.

In embodiments, a hypervisor can manage tables to map LMBs to PMBs(e.g., LMB table 202), and/or to map logical pages to physical pages(e.g., page tables 204A and/or 204B). A hypervisor, and/or hardwareelements of a computer, can restrict access to the tables to only thehypervisor, and other programs (e.g., programs executing in an LPAR) canbe prevented or prohibited from accessing the tables (or, otherstructures that associate logical memory blocks or pages with physicalmemory blocks or pages). Using the example of computer 102 of FIG. 1,hypervisor 108 can manage HPTs 204A and 204B.

A hypervisor can associate LMBs with PMBs, or portions thereof, at thetime an LMB is allocated to an LPAR, at the time an LPAR is started(e.g., booted), and/or a time a program executing in an LPAR makesreference to a page (or to the LA of some data) within an LMB. Ahypervisor can enter a PMB ID (for example), corresponding to aparticular LMB or LMB ID, into an LMB table at the time the hypervisorcreates the LMB, when allocating an LMB to an LPAR, or in response to afirst reference by an LPAR to a logical page within an LMB.

A program, such as an OS, executing in an LPAR can request a hypervisorto map a logical page to a physical page, and the program can make therequest at a time it attempts to first reference data within thatlogical page. For example, a processor executing in a computer canexecute an instruction that references a particular LA, and the LA maybe within a logical page that is not presently mapped by a page table toa physical page. The processor can generate a “page fault” exception, orinterrupt, resulting from an instruction reference to an address that isnot mapped to a physical page. A page fault exception or interrupt caninvoke a “page fault handler” (e.g., a page fault handler program orfunction of an OS) within an LPAR to establish a translation from the LAto the PA of a physical page to enable the processor to resume executionusing memory of that physical page.

In some embodiments, an LPAR (e.g., an OS within the LPAR) can establisha translation from an LA to a PA by invoking the hypervisor (e.g., bymeans of a program function call). A hypervisor can determine a physicalpage to map to the logical page, and the hypervisor can enter thephysical page (e.g., the PPN of the page) into an HPT (e.g., an entrycorresponding to the LPN of the logical page) that a processor (forexample) accesses to translate instruction LAs to PAs. For example, anLPAR can call hypervisor 108, by means of a hypervisor function call ofinterface 146 (e.g., “hpt_enter_page”), to enter a logical page addresstranslation into an HPT associated with that LPAR, such as HPT 204. Inanother function call of a hypervisor interface (e.g., a differenthypervisor call, or different form of an “hpt_enter_page” functioncall), an LPAR can signal to the hypervisor to invalidate, or remove, aparticular LA translation in an HPT.

In embodiments, an LPAR and/or a hypervisor can identify an LMB by anLMB ID. An LMB ID can itself be an address, such as the address of thefirst byte, or logical page, of the LMB relative to all LMBs created bya hypervisor. An LA, or a logical page corresponding to an LA, canoperate to identify an LMB (e.g., by implication from its logicaladdress). In alternative embodiments, an LMB ID can be some otheridentifier that uniquely identifies a particular LMB. In requesting ahypervisor to establish a translation from an LA to a PA in an HPT, anLPAR can, for example, provide one or more of the LA, the LPN of alogical page, or an LMB ID to the hypervisor in a hypervisor call.

The hypervisor can use the LA, LPN, and/or LMB ID to identify the LMBand associate the LMB with a corresponding PMB, and/or to associate theLPN with a corresponding PPN. In some embodiments, as part ofestablishing the translation, the hypervisor may determine that the LMBis not presently mapped to any PMB and may select a PMB to map from theLMB. Similarly, as part of establishing the translation, the hypervisormay determine that the logical page is not presently mapped to anyphysical page of a PMB and may select a physical page to map from thelogical page.

In a virtualized computer, it can be advantageous for two or more LPARsto share the same physical page of the computer. For example, one LPARin the computer can be a “server” LPAR and can make physical pagesmapped from its LMBs accessible to one or more other, “client” LPARs.For purposes of the disclosure, “server LPAR” refers herein to an LPARmaking physical pages allocated to it available for sharing with one ormore other LPARs, and “client LPAR” refers herein to an LPAR sharing theserver LPAR page(s).

FIG. 2B illustrates an example of two LPARs sharing a common physicalpage. For purposes of illustration, but not limiting to embodiments,FIG. 2B continues the example of virtualized computer 102 of FIG. 1 andthe LMB and page tables (HPTs) described in reference to FIG. 2A. FIG.2B illustrates the mapping of virtual pages to physical pages shown inFIG. 2A, with the addition of two LPARs mapping a “shared” physical pagein computer 102 memory 130. LMB 232A is allocated to LPAR 150A andcontains a logical page L2 mapped through HPT 204A to physical page P2of PMB 132B. For example, the LPN of LMB 232A logical page L2 can indexHPT 204A and the indexed entry can contain the PPN of PMB 132B physicalpage P2.

The dashed arrow from the HPT 204A LPN entry (containing the PPN of PMB132B physical page P2) indicates that LPAR 150A can be a server LPARthat has made physical page P2 of PMB 132A shareable by other LPARs.Accordingly, LPAR 150B can be a client LPAR that also maps PMB 132Bphysical page P2 to share the contents of that page with LPAR 150A (and,any additional LPARs, not shown, that may also map PMB 132B physicalpage P2). In FIG. 2A, LMB 232B is allocated to LPAR 150B, and logicalpage L1 of LMB 232B is mapped through HPT 204B to PMB 132B physical pageP2 to enable LPAR 150B to share that physical page with LPAR 150A. Hereagain, the dashed arrow from the HPT 204B LPN entry (containing the PPNof PMB 132B physical page P2) indicates that PMB 132B physical page P2is a shared physical page.

While the examples of FIG. 2A and FIG. 2B illustrate only 2 LPARsmapping virtual to physical addresses, it would be apparent to one ofordinary skill in the art that the scope of the disclosure is notlimited to only two LPARs mapping virtual addresses to physicaladdresses in this manner, or to sharing the same physical page in avirtualized computer memory. It would be further apparent to one ofordinary skill in the art that the scope of the disclosure is notlimited to LPARs sharing only a single physical page in a virtualizedcomputer memory.

In embodiments, a server LPAR can make a particular physical page (or,set of pages) available to client LPARs to share the physical page(s),or the content thereof. The terms “server LPAR” and “client LPAR” canhave many connotations, according to type of service a server LPARoffers to the client LPARs. As used herein, “server LPAR” refers to anLPAR that makes one or more physical pages allocated to it (e.g., mappedfrom a logical page of a server LPAR LMB) available to other LPARs toshare. Correspondingly, as used herein, “client LPAR” refers to an LPARthat is authorized (e.g., by the server LPAR, or by a hypervisor) toshare one or more physical pages of a server.

A “shared memory region (SMR)”, as used herein, refers to a particularset of related physical pages that are made available by a server LPARto share with client LPARs. Physical pages comprising an SMR can berelated as part of a particular data structure or file, and can be, forexample, contiguous physical pages within, or spanning, particular PMBs.Physical pages comprising an SMR can be pages that are non-contiguous,and can be within the same PMB or can be in different PMBs. A hypervisorcan interact with LPARs to create and manage an SMR, and the hypervisorcan use any of a variety of data structures to associate physical pageswith one or more SMRs.

FIG. 3 illustrates an example of two LPARs using an SMR to sharephysical memory pages, and example relationships between logical pagesof the respective LPARs, pages of the SMR, and physical pages in amemory of a computer. For purposes of illustrating the example, but notintended to limit embodiments, the example is described using theexample virtualized computer 102 of FIG. 1, and the example page tablemapping structures, within computer 102, of FIGS. 2A, and 2B.

As illustrated in FIG. 3, computer 102 includes client LPAR 310 andserver LPAR 320. Server LPAR 320 includes set 322 of logical pages(e.g., pages of an LMB allocated to server 320), and client LPAR 310includes set 312 of logical pages (e.g., pages of an LMB allocated toserver 310). As illustrated in FIG. 3, each of the logical pages withineach of sets 312 and 322 can be associated with a logical page ID (e.g.,an LPN) that can identify each logical page. For example, logical pageL1 in set 322 can be identified by, or associated with server LPID 324,and logical page L1 in set 312 can be identified by, or associated with,client LPID 314.

Memory 130 includes set 332 of physical pages (e.g., pages within aPMB). As illustrated in FIG. 3, physical pages within set 332 can beassociated with physical page ID (e.g., a PPN) that can identify eachphysical page. For example, physical page P1 in set 332 can beidentified by, or associated with PPID 334. Physical pages in set 332can be mapped from the logical pages in sets 322 and/or 312. The mappingcan be accomplished using page tables 204A and 204B, in the mannerdescribed in reference to FIGS. 2A and 2B, which can translate an LPIDto a PPID. For example, server LPID 324 can index 326 an entry in pagetable 204A that contains the PPID (or, PPN) of physical page P1 in set332, and client LPID 314 can index 316 an entry in page table 204B thatcontains the PPID (or, PPN) of physical page P1 in set 332.

FIG. 3 further illustrates SMR 330, which is associated 328 with serverLPAR 320. SMR 332 includes set 342 comprised of shared pages, such asS1, S2, and so forth. An SMR can have an SMR identifier to identify itamong the various SMRs of a virtualized computer. For example, in FIG.3, SMR 330 is identified by SMR ID 334. An SMR identifier can be uniquewithin the totality of SMRs possible in a particular virtualizedcomputer, or an SMR identifier can be unique with respect to aparticular LPAR (e.g., unique within a set of SMRs possible to identifyfor a particular server LPAR).

A shared page can be identified by a shared page ID (SPID), such asshared page S1 of shared page set 342 having SPID 336. A shared page IDcan be a page number unique within a virtualized computer, or unique toa particular SMR (or, SMR identifier), for example. In another example,an SPID can be comprised of the identity of an SMR and a page offset, orpage index, within that SMR.

The shared pages in set 342 (and comprising SMR 330) can correspond tological pages in set 322 of server LPAR 320. For example, shared page S1in set 342 can correspond 338A to server logical page L1 of set 332. Ashared page can further correspond to a particular physical page in amemory of a computer. Physical pages corresponding to shared pages of anSMR (i.e., physical pages comprising an SMR) can be, for example,contiguous physical pages within, or spanning, particular PMBs.Alternatively, physical pages comprising an SMR can be pages that arenon-contiguous. In some embodiments, server LPAR logical pagescorresponding to shared pages of an SMR can be included in one or moreLMBs allocated to the server LPAR, and the LMBs can correspond toparticular PMBs of a virtualized computer.

A shared page of an SMR can correspond to a physical page in a memory bymeans of the shared page having a correspondence to a particular logicalpage, and that logical page being mapped to that particular physicalpage. For example, in FIG. 3, shared page S1 of shared page set 342 cancorrespond 338B to physical page P1 of set 332, and the correspondencecan be by virtue of shared page S1 corresponding to logical page L1 ofset 322, and logical page L1 of set 322 being mapped to page P1 of set332 (e.g., by means of LPID 324 indexing 326 an entry of page table 204Ahaving a PPID corresponding to page P1 of set 332).

A server LPAR can create an SMR, and the creation can be in response toa request from an application executing within the LPAR, or in responseto some other event or stimulus, such as in response to a message from amanagement function that coordinates the interaction of applicationsexecuting in a plurality of LPARs. A hypervisor can interact with aserver and/or client LPAR to create and/or manage an SMR, and thehypervisor can use any of a variety of data structures to associatephysical pages with one or more SMRs.

FIG. 4 illustrates an example method, 400, for a server LPAR to registeran SMR. For purposes of illustrating the method, but not intended tolimit embodiments, the method is described as performed by a hypervisor.At 402 the hypervisor receives an SMR registration request to registeran SMR. The request can, for example, result from or be associated withan application in a server LPAR, or a server LPAR itself, creating anSMR. The registration request can comprise a request to assign an SMRID, and (optionally, if needed) to allocate resources to the SMR, suchas a data structure (or an entry within a data structure) within memoryused by the hypervisor.

As used herein, for purposes of illustrating the examples of thedisclosure, but not limiting to embodiments, “programming interface”refers to any of a variety of methods to communicate to or from aprogram component of a computer (e.g., a program) to perform anoperation or receive results of an operation, such as a programinterrupt or exception, a message, or a function call. For purposes ofillustrating method 400, the registration request can be considered tobe a function call, for example, of a hypervisor interface, such asinterface 146 of FIG. 1.

At 404, the hypervisor determines if it can assign an SMR ID.Embodiments of a virtualized computer can limit the number of SMRs to aparticular maximum number. Accordingly, the hypervisor can pre-determinea range of SMR IDs, such as 0 to the maximum number minus 1, and candetermine, at 404, whether all SMR IDs are associated with an existingSMR, or some SMR IDs are not presently in use. If an SMR ID is available(i.e., not presently in use) the hypervisor can assign that SMR ID tothe SMR associated with the registration request. In alternativeembodiments, the number of SMRs may not be limited, and the hypervisorcan determine, at 404, to generate a new SMR ID or, alternatively, thatit can reuse an existing, presently unused SMR ID.

Accordingly, at 406, if the hypervisor determines that it can assign anSMR ID, the hypervisor selects (or, generates) an SMR ID to associatewith the SMR. At 408 the hypervisor records the identifier of the serverLPAR that created the SMR in association with the SMR ID. For example,the hypervisor can have a table of LPAR IDs that is indexed by an SMRID, to associate a particular SMR with the LPAR that created it.

At 410, the hypervisor completes processing the SMR registrationrequest. Completing processing of the SMR registration, optionally, caninclude recording additional information regarding properties of theSMR, such as identities of shared pages, identities of client LPARspermitted to access the shared pages, etc. If, at 404, the hypervisordetermined that it could not assign an SMR ID to the SMR, completingregistration processing can include returning a failure status to theserver LPAR, or other originator of the SMR registration request (if notthe server LPAR).

To access a physical memory page corresponding to a shared page of anSMR, a client LPAR can establish a mapping from a logical page allocatedto the client LPAR to the physical memory page, such as illustrated inFIG. 3 wherein client LPAR 310 has mapped logical page L1 of set 312 tophysical page P1 of set 332, which corresponds to shared page S1 of SMR330. A client LPAR can establish such a mapping, for example, as part ofan operation to establish sharing data in the shared pages of an SMR.However, logical to physical translation mechanisms (e.g., hardware pagetables) can have limited resources that must be reassigned as a programexecutes. For example, a page table can have a fixed number of entriesthat can be fewer than the number of logical pages allocated to aprogram (or, an LPAR in which the program executes). Correspondingly, ifa program references a logical address that is not presently mapped, theprogram can incur a page fault. A page fault handler program may need,then, to invalidate an existing mapping (e.g., using a Least RecentlyUsed (LRU) or Least Frequently Used (LFU) criteria) to make a page tableentry available to map the referenced logical page to a page in physicalmemory.

If a program maps more logical pages than are presently needed, orlikely to be needed, the mappings can consume translation resources thatcould, alternatively, be available to map logical pages of otherprograms that are more likely to reference an unmapped logical page.Accordingly, it can be more efficient use of such limited translationresources to map any particular shared page of an SMR only at the time aprogram references a location within that page. Accordingly, inembodiments, a client LPAR can establish a mapping to a physical pagecorresponding to a shared page of an SMR at a time when a program (e.g.,an application program, or the client LPAR OS) executing with the clientLPAR attempts to access a data location within a shared page. Forexample, a client LPAR can associate a logical page with a shared pageof an SMR and, at a later time, map the shared page in response to apage fault of a program referencing an address in the client LPARlogical page.

FIG. 5 illustrates an example method, 500, for a client LPAR to map ashared page of an SMR in response to an access event, such as a pagefault. Continuing in the manner of the description of method 400 of FIG.4, for purposes of illustrating the method, but not limiting toembodiments, method 500 is described as performed by a hypervisor, andin the context of computer 102 of FIG. 1 and the mapping relationshipsand page tables of FIGS. 2A and 2B.

At 502, the hypervisor receives a get-page-ID request, to provide to aclient LPAR the identity of a physical page corresponding to a sharedpage of an SMR. The request can be initiated or communicated by a clientLPAR, or can be initiated or communicated by another component of acomputer on behalf of the client LPAR. For example, the get-page-IDrequest can be a function call of a hypervisor interface, and a clientLPAR can make the function call to the hypervisor. The request (or,function call) can include the identity of the SMR (e.g., an SMR ID), adescription of the shared page, and, optionally, the identity of aclient LPAR requesting the physical page identifier. The description ofthe shared page can be a page number, or any other description, thatuniquely identifies that page within the set of shared pages comprisingthe SMR corresponding to the SMR ID.

At 504, the hypervisor determines if the SMR ID corresponds to a validSMR (e.g., an SMR that is registered). If, at 504, he hypervisordetermines that the SMR ID does not correspond to a valid SMR, at 522,the hypervisor completes processing the get-page-ID request. Completingprocessing, if the SMR ID is not associated with a valid SMR, caninclude providing a rejection (or, “Invalid SMR ID”) status to theclient LPAR.

If the SMR ID corresponds to a valid SMR, the hypervisor determines, at506, the identity of the server LPAR that registered, or is otherwiseassociated with, the SMR. The hypervisor can use a table of LPAR IDs,for example, indexed by an SMR ID, to determine the server LPAR ID. At508, the hypervisor communicates a request to the identified server LPARto obtain the identity of the physical page corresponding to the sharedpage. The request can include the SMR ID of the SMR, the description ofthe shared page, and, optionally, the identity of the client LPAR. Thehypervisor can use a variety of interfaces—such as function calls,interrupts, or messages—to communicate the request to the server LPAR.

At 510, the hypervisor receives a page-ID response, which can includethe identity of the physical page corresponding to the shared page. Thepage-ID response can be, for example, a hypervisor call and the serverLPAR can make the call to provide the identifier of the physical page asa call parameter. Alternatively, another component of a computer canprovide the page-ID response, and/or the physical page identity, to thehypervisor on behalf of the server.

In embodiments, a page-ID response (or, function call) can provide aphysical page identifier that is directly usable (e.g., a PPN orphysical memory address) by a client LPAR to map the physical page toclient LPAR logical page. However, in embodiments it can be advantageous(e.g., for secure isolation of data of one LPAR from other LPARs) toprevent any LPAR—server or clients—from having, or knowing, the actual,physical memory address or PPN of a physical page mapped to a logicalpage of an LPAR. Accordingly, a server LPAR can be limited to knowingonly a logical or shared page identifier, and not the actual physicalpage identifier of a physical page corresponding to a shared page. Forexample, at 510, the hypervisor can receive an LPN of a server LPARlogical page, and can use the LPN (e.g., to index a page table) todetermine a PPN (e.g., extracted from a page table entry) of thephysical page corresponding to the shared page of the SMR.

To prevent the client LPAR, associated with the get-page-ID request,from knowing or determining the physical address of the requestedphysical (shared) page, at 512, a hypervisor can, optionally, determinea form of physical page identifier that is not directly usable (e.g., isnot a PPN or physical memory address) by a client LPAR to map a logicalpage, or does not expose a physical memory address of a shared page to aclient LPAR. For example, as illustrated in FIG. 5, to form a pageidentifier of the physical page corresponding to the shared page, whichis not directly usable by a client LPAR, at 512 the hypervisor canencrypt the PPN (or other form of physical address) to provide anencrypted page ID.

At 514, the hypervisor communicates the physical page identifier,determined at 510 or 512, to the client LPAR associated with theget-page-ID request. The hypervisor can use a variety of interfaces—suchas function calls, interrupts, or messages—to communicate the physicalpage ID to the client LPAR.

At 516, the hypervisor receives a page ID enter request, to map alogical page of a client LPAR to a physical page. The page ID enterrequest can be, for example, a hypervisor call and a client LPAR canmake the call. The call can include an LPN corresponding to a logicalpage of the client LPAR to map the physical page, and the physical pagecan correspond to a shared page. The call can further include a physicalpage ID communicated to the client LPAR at 514.

518 is an optional operation that the hypervisor can perform if thephysical page ID received at 516 is not a physical page address, or pageID (e.g., a PPN), that is directly usable to map the the logical page toa physical page address. For example, as illustrated in FIG. 5, thephysical page ID received at 516 can be an encrypted page ID generatedat 512, and the hypervisor, at 518, can decrypt the physical pageidentifier to determine a PPN (for example) corresponding to thatphysical page.

At 520, the hypervisor completes the page ID enter processing of method500. As illustrated, completing the page ID enter processing can includemapping the client LPAR logical page to the physical page correspondingto the shared page. For example, at 520 the hypervisor can enter a PPN(e.g., received at 516 or determined at 518) into a page table entryindexed by (or, corresponding to) the LPN provided in the page ID entercall.

While the example method 500 of FIG. 5 is described as performed by ahypervisor, it would be apparent to one of ordinary skill in the artthat other functions of a virtualized computer, or of a computer incommunication with a virtualized computer (e.g., a computer connected bymeans of interfaces 144 and/or 142 to virtualized computer 102 of FIG.1), can perform the method or elements thereof. It would be furtherevident to one of ordinary skill in the art that the get-page-IDrequest, page ID response, and/or page enter requests can be other thana hypervisor function call, such as interrupts, exceptions, messages, orother means of communicating a request to a component performing themethod.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method for sharing a physical memory page amonga plurality of logical partitions (LPARs) included a computer, themethod comprising: receiving a get-page-ID request that includes anidentity of a shared page and an identity of a shared memory region(SMR) that includes the shared page, wherein the SMR is associated witha first LPAR and the get-page-ID request is associated with a secondLPAR; communicating to the first LPAR a request to identify a physicalpage in a physical memory of the computer that corresponds to the sharedpage; receiving, in response to the get-page-ID request, a page IDresponse that comprises an identity of a first logical page thatcorresponds to the shared page and the physical page; communicating tothe second LPAR, in response to the page ID response, a first identityof the physical page, wherein the first identity of the physical page isan encrypted page number corresponding to the physical page; convertingthe encrypted page number to a physical page number; and entering thephysical page number into an address translation element, wherein theaddress translation element is operative to translate the identity ofthe physical page number to a physical page address of the physicalpage.
 2. The method of claim 1 further comprising: receiving aregistration request, wherein the registration request is associatedwith the SMR and with the first LPAR; determining, in response to theregistration request, an SMR identifier, the SMR identifier serving asthe identity of the SMR; and communicating to the first LPAR, inresponse to the registration request, the SMR identifier.
 3. The methodof claim 2 wherein the registration request is associated with anoperation to create an SMR.
 4. The method of claim 1 wherein thetranslation element comprises a page table.
 5. The method of claim 1,wherein communicating the first identity to the second LPAR comprisesgenerating the encrypted page number.
 6. The method of claim 1 whereinthe get-page-ID request is associated with a page fault incurred by thesecond LPAR.
 7. The method of claim 1 wherein the method is performed byone of a hypervisor, a hosting LPAR, and an unhosted virtualizationsystem.
 8. A computer program product for sharing a physical memory pageamong a plurality of logical partitions (LPARs) included in a computer,the computer program product comprising a computer readable storagemedium having program instructions embodied therewith, the programinstructions executable by a processor to cause the processor to performa method comprising: receiving a get-page-ID request that includes anidentity of a shared page and an identity of a shared memory region(SMR) that includes the shared page, wherein the SMR is associated witha first LPAR and the get-page-ID request is associated with a secondLPAR; communicating to the first LPAR a request to identify a physicalpage in a physical memory of the computer that corresponds to the sharedpage; receiving, in response to the get-page-ID request, a page IDresponse that comprises an identity of a first logical page thatcorresponds to the shared page and the physical page; communicating tothe second LPAR, in response to the page ID response, a first identityof the physical page, wherein the first identity of the physical page isan encrypted page number corresponding to the physical page; convertingthe encrypted page number to a physical page number; and entering thephysical page number into an address translation element, wherein theaddress translation element is operative to translate the identity ofthe physical page number to a physical page address of the physicalpage.
 9. The computer program product of claim 8, wherein the methodperformed by the processor further comprises: receive a registrationrequest, wherein the registration request is associated with the SMR andwith the first LPAR; determine, in response to the registration request,an SMR identifier, the SMR identifier serving as the identity of theSMR; and communicate to the first LPAR, in response to the registrationrequest, the SMR identifier.
 10. The computer program product of claim9, wherein the registration request is associated with an operation tocreate an SMR.
 11. The computer program product of claim 8, wherein thetranslation element comprises a page table.
 12. The computer programproduct of claim 8, wherein communicating the first identity to thesecond LPAR comprises generating the encrypted page number.
 13. Thecomputer program product of claim 8 wherein the get-page-ID request isassociated with a page fault incurred by the second LPAR.
 14. A systemfor sharing a physical memory page between logical partitions (LPARs),the system comprising: a memory; and a processor communicatively coupledto the memory, wherein the processor is configured to perform a methodcomprising: receiving a get-page-ID request that includes an identity ofa shared page and an identity of a shared memory region (SMR) thatincludes the shared page, wherein the SMR is associated with a firstLPAR and the get-page-ID request is associated with a second LPAR;communicating to the first LPAR a request to identify a physical pagethat corresponds to the shared page, the physical page being in aphysical memory of a computer that includes the first LPAR; receiving,in response to the get-page-ID request, a page ID response thatcomprises an identity of a first logical page that corresponds to theshared page and the physical page; communicating to the second LPAR, inresponse to the page ID response, a first identity of the physical page,wherein the first identity of the physical page is an encrypted pagenumber corresponding to the physical page; converting the encrypted pagenumber to a physical page number; and entering the physical page numberinto an address translation element, wherein the address translationelement is operative to translate the identity of the physical pagenumber to a physical page address of the physical page.
 15. The systemof claim 14, wherein the method further comprises: receiving aregistration request, wherein the registration request is associatedwith the SMR and with the first LPAR; determining, in response to theregistration request, an SMR identifier, the SMR identifier serving asthe identity of the SMR; and communicating to the first LPAR, inresponse to the registration request, the SMR identifier.
 16. The systemof claim 15, wherein the registration request is associated with anoperation to create an SMR.
 17. The system of claim 14, wherein thetranslation element comprises a page table.
 18. The system of claim 14,wherein communicating the first identity to the second LPAR comprisesgenerating the encrypted page number.
 19. The system of claim 14,wherein the get-page-ID request is associated with a page fault incurredby the second LPAR.
 20. The system of claim 14, wherein the at least oneof the get-page-ID request or the page-ID response is included in aprogramming interface of a program selected from a group consisting of ahypervisor, a hosting LPAR, and an unhosted virtualization system.